package com.shlh.saas.entity.twitter;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.util.Date;

/**
 * Twitter用户实体类
 */
@Data
@TableName("twitter_user")
public class TwitterUser {
    
    /**
     * 主键ID
     */
    @TableId
    private Long id;
    
    /**
     * 电子邮箱
     */
    @TableField("email")
    private String email;
    
    /**
     * 用户名
     */
    @TableField("name")
    private String name;
    
    /**
     * 推特账号
     */
    @TableField("screen_name")
    private String screenName;
    
    /**
     * 粉丝数
     */
    @TableField("followers")
    private Integer followers;
    
    /**
     * 账户创建时间
     */
    @TableField("created_at")
    private Date createdAt;
    
    // 以下是不在数据库中但在应用中可能需要的字段

    @TableField(exist = false)
    private String sourceTable;

    @TableField(exist = false)
    private String sourceId;

    /**
     * 电话号码
     * 注意：实际数据库表中没有此字段
     */
    @TableField(exist = false)
    private String phone;

    /**
     * 位置信息
     * 注意：实际数据库表中没有此字段
     */
    @TableField(exist = false)
    private String location;

    /**
     * 是否已认证
     * 注意：实际数据库表中没有此字段
     */
    @TableField(exist = false)
    private Boolean verified;

    /**
     * 粉丝数（用于导出，映射到followers字段）
     * 注意：实际数据库表中没有此字段
     */
    @TableField(exist = false)
    private Integer followersCount;

    /**
     * 关注数 - 已注释掉
     * 注意：实际数据库表中没有此字段
     */
    // @TableField(exist = false)
    // private Integer friendsCount;

    /**
     * 推文数 - 已注释掉
     * 注意：实际数据库表中没有此字段
     */
    // @TableField(exist = false)
    // private Integer statusesCount;

    /**
     * 列表数 - 已注释掉
     * 注意：实际数据库表中没有此字段
     */
    // @TableField(exist = false)
    // private Integer listedCount;

    /**
     * 性别
     * 注意：实际数据库表中没有此字段
     */
    @TableField(exist = false)
    private String gender;

    /**
     * 个人网站
     * 注意：实际数据库表中没有此字段
     */
    @TableField(exist = false)
    private String url;

    /**
     * 描述信息
     * 注意：实际数据库表中没有此字段
     */
    @TableField(exist = false)
    private String description;

    /**
     * 最后一条推文来源
     * 注意：实际数据库表中没有此字段
     */
    @TableField(exist = false)
    private String lastStatusSource;

    /**
     * 获取粉丝数（用于导出兼容性）
     * 如果 followersCount 不为空则返回 followersCount，否则返回 followers
     */
    public Integer getFollowersCount() {
        return followersCount != null ? followersCount : followers;
    }

    /**
     * 设置粉丝数（用于导出兼容性）
     * 同时设置 followersCount 和 followers
     */
    public void setFollowersCount(Integer followersCount) {
        this.followersCount = followersCount;
        this.followers = followersCount;
    }
}